﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Diagnostics;

namespace ErrorHandling
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {

        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {
            var ex = Server.GetLastError();

            if (ex == null) return;

            Trace.WriteLine("Unhandled application exception occured:" +  ex);


            if (HttpContext.Current.Session == null)
                return;

            Session["LastError"] = (ex != null) ? ex.GetBaseException().Message : new Exception("Unknown Error").Message;
            Session["LastException"] = ex.GetBaseException();
            Session["LastErrorLocation"] = Request.Url;
            Server.ClearError();
            Response.Redirect("~/error.aspx");
        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}